Skip to content

validate post GRT WNS opto#4320

Open
openroad-ci wants to merge 5 commits into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:secure-opt-grt-wns
Open

validate post GRT WNS opto#4320
openroad-ci wants to merge 5 commits into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:secure-opt-grt-wns

Conversation

@openroad-ci

@openroad-ci openroad-ci commented Jul 1, 2026

Copy link
Copy Markdown
Member

Timing benefits on private PDK designs seem quite significant.

Runtime impact seems small for hercules_is_int:
Base runtime (verific): 582 sec
Test runtime (verific): 575 sec

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new optimization step, controlled by the OPT_POST_GRT_WNS variable, to optimize worst negative slack (WNS) after global routing using VT swapping and wire rerouting. Feedback on these changes highlights a redundant detailed placement and global routing run that occurs when this optimization is enabled, and recommends propagating the MATCH_CELL_FOOTPRINT and SETUP_SLACK_MARGIN parameters to the repair_timing command to ensure user configurations are respected.

Comment thread flow/scripts/global_route.tcl
@precisionmoon precisionmoon requested a review from maliberty July 1, 2026 02:22
@precisionmoon

Copy link
Copy Markdown
Contributor

@jhkim-pii, @jfgava, FYI.

@precisionmoon precisionmoon added the UpdateRules Starts GHA to update rules label Jul 1, 2026
@openroad-ci openroad-ci removed the UpdateRules Starts GHA to update rules label Jul 1, 2026
@jfgava

jfgava commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

If the focus is just on WNS, we can try different phases, such as the "WNS" policy (-phases "WNS"). The problem is that it will focus only on the most critical path. If it can't be optimized, the run ends. There is no optimization on the secondary paths (no TNS gains).
But maybe it is worth trying. I think the objective here is to go a bit further on QoR, using optimizations that don't disturb placement and routing.
What are your thoughts? @jhkim-pii

@jhkim-pii

Copy link
Copy Markdown
Contributor

I agree that focusing on WNS rather than TNS is required to minimize the PNR impact.
But @precisionmoon said that WNS policy does not work well unfortunately.

I also investigate how to fix the post-route timing violations effectively.
I am trying to insert buffers more precisely to avoid causing additional displacement impact or routing detour for nets w/ large delay.

@maliberty

Copy link
Copy Markdown
Member

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 106213bbaa

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +100 to +101
if { [env_var_exists_and_non_empty MATCH_CELL_FOOTPRINT] } {
lappend repair_timing_args -match_cell_footprint

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Honor MATCH_CELL_FOOTPRINT=0

Because defaults.py exports JSON defaults, MATCH_CELL_FOOTPRINT is present as the non-empty string 0 in normal flows that do not enable it. This condition therefore always appends -match_cell_footprint for the new post-GRT WNS repair pass, unlike repair_timing_helper/recover_power_helper which only add the flag when the variable equals 1; on libraries where useful VT swaps do not share a footprint, the default pass will be more constrained than requested and can miss the intended WNS improvement.

Useful? React with 👍 / 👎.

# Route the modified nets by rsz journal restore
log_cmd global_route -end_incremental {*}$res_aware \
-congestion_report_file $::env(REPORTS_DIR)/congestion_post_recover_power.rpt
if { !$::env(OPT_POST_GRT_WNS) } {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep RECOVER_POWER active with WNS optimization

With OPT_POST_GRT_WNS defaulting to 1, this guard skips recover_power_helper in the default flow, so existing designs that set RECOVER_POWER (for example flow/designs/gf55/aes/config.mk and flow/designs/asap7/jpeg_lvt/config.mk) silently lose the post-global-route power recovery stage that previously ran whenever RECOVER_POWER was nonzero. The new WNS pass should not make the user-requested power recovery unreachable unless that incompatibility is explicitly handled.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@precisionmoon this could be a cause of wns improvement as we know recover_power can sometimes damage it. We should fix this and retest.

Signed-off-by: Cho Moon <cmoon@precisioninno.com>
Signed-off-by: Cho Moon <cmoon@precisioninno.com>

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
Signed-off-by: Cho Moon <cmoon@precisioninno.com>

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
Signed-off-by: Cho Moon <cmoon@precisioninno.com>

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
Signed-off-by: Cho Moon <cmoon@precisioninno.com>

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
@openroad-ci openroad-ci force-pushed the secure-opt-grt-wns branch from 106213b to 3b129ed Compare July 2, 2026 14:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants